package project2;

public class Merge {
    int[] aux;
    public  void merge(int[] a, int lo, int mid, int hi){//归并操作
        int L = lo, R = mid+1;
        for(int i = lo; i <= hi;i ++) aux[i] = a[i];
        //归并操作
        for (int i = lo; i <=  hi; i++){
            //这四个判断的顺序，必须先判断左右的元素是否已经用完，
            //因为每次先把a中元素赋值给aux，只是其中一部分，先判断大小的话
            //会出现未知性错误
            if (L > mid) a[i] = aux[R++];//左边没有元素
            else if (R > hi) a[i] = aux[L++];//右边没有元素
            else if (aux[L] > aux[R]) a[i] = aux[R++];
            else a[i] = aux[L++];
        }
    }
}
